#ifndef THREEDIMENSIONCROSSSECTIONMODULE_H
#define THREEDIMENSIONCROSSSECTIONMODULE_H

#include "threedimensioncrosssection_global.h"
#include "imodule.h"

#include <QObject>

struct ThreeDimensionCrossSectionModulePrivate;

class ThreeDimensionCrossSectionModule : public QObject, public IModule
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID IModule_iid FILE "threedimensioncrosssection.json")
    Q_INTERFACES(IModule)
    
public:
    ThreeDimensionCrossSectionModule(QObject* parent = nullptr);
    ~ThreeDimensionCrossSectionModule();
    
    // 实现IModule接口
    QString name() const override;
    void initialize() override;


    ///
    /// \brief name 树形节点的名称
    /// \return
    ///
    QString treeName() const override;

    ///
    /// \brief 用于设置当前的树形节点的parent树形节点的名称
    /// \return
    ///
    virtual QString treeParentName() const override;

    ///
    /// \brief 树形节点的icon
    /// \return
    ///
    virtual QIcon treeIcon() const override;

    ///
    /// \brief 树形节点选取的图标
    /// \return
    ///
    virtual QIcon treeSelectedIcon() const override;

    std::tuple<QString, QString, QString> toolFilePath() const override;

    virtual IModuleForm* centerWidget() override;


    QList<QAction*> highLightActions() override;

    QString dbTableName() override;


    ///
    /// \brief 获取当前模型的编辑页面
    /// \return
    ///
    QList<IModuleEditFrameInterface*> editWidgets() override;


    QList<TableInfoData> tableInfoModels() override;

    IFindWidget* findWidget() override;


    bool isNewWidget() override { return true; }

    bool hasFindGeoSupport() override { return true; }


    virtual void processHighlightData(const QVariantMap& data, bool isHighlight) override;

    virtual QMap<QString, QString> highlightTypes() override;

private:
    ThreeDimensionCrossSectionModulePrivate* m_data;
};

#endif // THREEDIMENSIONCROSSSECTIONMODULE_H
